home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen…rary 8 (Internal Edition) / Apple R&P Lib Internal v8.0.iso / 3-Presentations / Markets / K-12 Education / HyperCard in Education / Towers of Hanoi / stack.txt < prev   
Text File  |  1990-02-20  |  5KB  |  132 lines

  1. -- stack: in
  2. -- format: 8 (HyperCard 1)
  3. -- flags: 0x1000 (none)
  4. -- protect password hash: 0
  5. -- maximum user level: 5 (scripting)
  6. -- window: Rect(x1=0, y1=0, x2=0, y2=0)
  7. -- screen: Rect(x1=0, y1=0, x2=0, y2=0)
  8. -- card dimensions: w=0 h=0
  9. -- scroll: x=0 y=0
  10. -- background count: 1
  11. -- first background id: 2783
  12. -- card count: 1
  13. -- first card id: 3043
  14. -- list block id: 3313
  15. -- print block id: 0
  16. -- font table block id: 0
  17. -- style table block id: 0
  18. -- free block count: 0
  19. -- free size: 0 bytes
  20. -- total size: 15360 bytes
  21. -- stack block size: 4096 bytes
  22. -- created by hypercard version: 0x00000000
  23. -- compacted by hypercard version: 0x01228000
  24. -- modified by hypercard version: 0x01228000
  25. -- opened by hypercard version: 0x01228000
  26. -- patterns[0]: 0x0000000000000000
  27. -- patterns[1]: 0x8000000008000000
  28. -- patterns[2]: 0x8800220088002200
  29. -- patterns[3]: 0x8888222288882222
  30. -- patterns[4]: 0x88AA22AA88AA22AA
  31. -- patterns[5]: 0xCCAA33AACCAA33AA
  32. -- patterns[6]: 0xEEAABBAAEEAABBAA
  33. -- patterns[7]: 0xEEBBBBEEEEBBBBEE
  34. -- patterns[8]: 0xFFBBFFEEFFBBFFEE
  35. -- patterns[9]: 0xFFBBFFFFFFBBFFFF
  36. -- patterns[10]: 0x8010022001084004
  37. -- patterns[11]: 0xFFFFFFFFFFFFFFFF
  38. -- patterns[12]: 0x8822882288228822
  39. -- patterns[13]: 0x1122448811224488
  40. -- patterns[14]: 0xC4800C6843023026
  41. -- patterns[15]: 0xB130031BD8C00C8D
  42. -- patterns[16]: 0xAA00AA00AA00AA00
  43. -- patterns[17]: 0x8822552288225522
  44. -- patterns[18]: 0x8855225588552255
  45. -- patterns[19]: 0x77DD77DD77DD77DD
  46. -- patterns[20]: 0x8000000000000000
  47. -- patterns[21]: 0xAA55AA55AA55AA55
  48. -- patterns[22]: 0x038448300C020101
  49. -- patterns[23]: 0x8244394482010101
  50. -- patterns[24]: 0x8814224188412214
  51. -- patterns[25]: 0x8080413E080814E3
  52. -- patterns[26]: 0x22048C7422179810
  53. -- patterns[27]: 0xBE808808EB088880
  54. -- patterns[28]: 0x25C8328964244C92
  55. -- patterns[29]: 0xA29C41BE2AC914EB
  56. -- patterns[30]: 0x40A00000040A0000
  57. -- patterns[31]: 0x8040200002040800
  58. -- patterns[32]: 0xAA00800088008000
  59. -- patterns[33]: 0xFF80808080808080
  60. -- patterns[34]: 0x081C22C180010204
  61. -- patterns[35]: 0xFF808080FF080808
  62. -- patterns[36]: 0xF87422478F172271
  63. -- patterns[37]: 0xBF00BFBFB0B0B0B0
  64. -- patterns[38]: 0xFF7FBE5DA2418000
  65. -- patterns[39]: 0xFAF5FAF5A050A050
  66. -- checksum: 0x0
  67. ----- HyperTalk script -----
  68. on domenu menu                       --// Added by Medior, Inc. 2/20/90
  69.   global RPStackName
  70.   if menu is in "Home,Quit HyperCard" and RPStackName is not empty then
  71.     set cursor to watch
  72.     put RPStackName into shortname
  73.     repeat until offset(":",shortname) = 0
  74.       delete char 1 to offset(":",shortname) of shortname
  75.     end repeat
  76.     delete last char of shortname
  77.     answer "This will return to "&shortname&"." with "Cancel" or "OK"
  78.     if it is "Cancel" then exit domenu
  79.     set cursor to watch
  80.     lock screen
  81.     go RPStackName
  82.     unlock screen with dissolve
  83.     exit domenu
  84.   else pass doMenu
  85. end domenu
  86.  
  87. -- Copyright ¬© 1988 Cincinnati Country Day School.  All rights reserved.
  88.  
  89. -- This is the recursive algorithm that moves a tower of "height" disks
  90. -- from the "source" pole to the "dest" pole using the "aux" pole as
  91. -- the auxiliary.  It works as follows:  if height is 0, there is no
  92. -- tower to move, and if source = dest, there is no movement, so in
  93. -- this case the algorithm exits having done nothing.  Otherwise, the
  94. -- algorithm recursively calls itself to move a tower of height - 1
  95. -- disks from the source to the auxiliary via the destination.  Having
  96. -- thus moved all overlying disks out of the way, the algorithm then
  97. -- simply moves disk number "Height" from the source to the destination.
  98. -- Finally, it again calls itself recursively to move the tower of
  99. -- height - 1 disks from the auxiliary to the destination on top of disk
  100. -- number "Height."  See the script of the background for the details
  101. -- of other handlers.
  102.  
  103. on moveTower height, source, dest, aux
  104.   add 1 to field depth
  105.   if height > 0 and source ‚↠dest then
  106.     moveTower height - 1, source, aux, dest
  107.     moveDisk height, source, dest
  108.     moveTower height - 1, aux, dest, source
  109.   end if
  110.   subtract 1 from field depth
  111. end moveTower
  112.  
  113. on moveDisk n, source, dest
  114.   global yBase, dHeight, stackHeight, xPole, poleTop
  115.   get "Disk" && n
  116.   put the loc of bkgnd button it into dSource
  117.   put "0,0" into dDest1
  118.   put item source of xPole into item 1 of dDest1
  119.   put poleTop into item 2 of dDest1
  120.   put dDest1 into dDest2
  121.   put item dest of xPole into item 1 of dDest2
  122.   put dDest2 into dDest3
  123.   put yBase - dHeight * item dest of stackHeight into item 2 of dDest3
  124.   drag from dSource to dDest1
  125.   drag from dDest1 to dDest2
  126.   drag from dDest2 to dDest3
  127.   subtract 1 from item source of stackHeight
  128.   add 1 to item dest of stackHeight
  129.   add 1 to field moves
  130. end moveDisk
  131.  
  132.